<?php
/**
 * Created by PhpStorm.
 * User: 86182
 * Date: 2020/6/22
 * Time: 23:37
 */

namespace App\Http\Controllers\Admin\Goods;


use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UploadController extends Controller
{

    public function upload(Request $request, $from=0)
    {
        $file = $request->file('file');//获取文件，与layui中的js的配置 field:'file'。一致。
        $allowed_extensions = ["txt","jpg","png"]; //多类型
//        var_dump($file->getClientOriginalExtension());
        //判断文件是否是允许上传的文件类型
        if ($file->getClientOriginalExtension()&&!in_array($file->getClientOriginalExtension(),$allowed_extensions))
        {
            $data=[
                'status'=>0,//返回状态码，在js中用改状态判断是否上传成功。
                'msg'=>'不支持此格式'
            ];
            return json_encode($data);
        }

        //保存文件，新建路径，拷贝文件
        $path=date('Y/m/d/',time());
        $destinationPath ='uploads/'.$path;
        is_dir($destinationPath) or mkdir($destinationPath,0777,true);
        $extension = $file->getClientOriginalExtension();
        $fileName = md5(mt_rand() . time()) . '.' . $extension;
        $file->move($destinationPath,$fileName);
        $from = $request->input('from') ?? 0;
//        var_dump($from);
        if($from==1){
            $data=[
                'location'=>'/'.$destinationPath.$fileName//上传成功，返回上传原文件名字
            ];
        }else{
            $data=[
                'status'=>1,//返回状态码，在js中用改状态判断是否上传成功。
                'msg'=>$destinationPath.$fileName,//上传成功，返回服务器上文件名字
                'originalname'=>$file->getClientOriginalName()//上传成功，返回上传原文件名字
            ];
        }

        return json_encode($data);

    }

    public function uploads(Request $request)
    {
        if ($request->isMethod('POST')) { //判断是否是POST上传，应该不会有人用get吧，恩，不会的

            //在源生的php代码中是使用$_FILE来查看上传文件的属性
            //但是在laravel里面有更好的封装好的方法，就是下面这个
            //显示的属性更多
            $fileCharater = $request->file('source');

            if ($fileCharater->isValid()) { //括号里面的是必须加的哦
                //如果括号里面的不加上的话，下面的方法也无法调用的

                //获取文件的扩展名
                $ext = $fileCharater->getClientOriginalExtension();

                //获取文件的绝对路径
                $path = $fileCharater->getRealPath();

                //定义文件名
                $filename = date('Y-m-d-h-i-s') . '.' . $ext;

                //存储文件。disk里面的public。总的来说，就是调用disk模块里的public配置
                Storage::disk('public')->put($filename, file_get_contents($path));
            }
        }
        return view('upload');
    }
}